package sw;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JOptionPane;

import sw.UtilidadesBD;

public class UsuariosSW {
	
	private int codigoRegistro;
	private String apellidoRegistro;
	private String direccionRegistro;
	private boolean adminRegistro;
	private String nombreRegistro;
	private static Connection conexionBD = null;
	private Statement stmt;
	private ResultSet rs;
	private static int contador;
	private int clienteRegistro;
	private UtilidadesBD BD;
	
	
	public UsuariosSW(){
		
	BD= new UtilidadesBD();
	BD.conectar();
	stmt=BD.getStmt();
	rs=BD.getRs();
	}

//necesitamos UTILIDADES BD

	public String cargarCombo() {
		try {
		if(contador == 0){

			stmt=BD.createStatement();
			String query = "SELECT USUARIO FROM CLIENTE";
			rs = stmt.executeQuery(query);
			rs.next();
			contador++;
			
			return rs.getString("USUARIO");
		}
		else
		{
			if(rs.next())
				return rs.getString("USUARIO");
			else{
				contador = 0;
				return "";
			}
				
		}
	} catch (SQLException e)
		{
			System.out.println(e.getMessage());	
			return "ERROR";
		}

	}

	public boolean borrarUsuario(String usu) {
		
		String query = "DELETE FROM CLIENTE WHERE USUARIO = '"+usu+"';";
		try 
		{
			System.out.println("aqui");
			stmt=BD.createStatement();
			stmt.executeUpdate(query);
			System.out.println("aqui2");
			stmt.close();
			return true;
			
		} catch (SQLException e) {
			System.out.println(e.getMessage());
			//stmt.close();
			return false;
		
		}
	
		
	}

	public void insertarClienteBD(String nombre, String apellido,
			String usuario, String direccion, String password, int codcliente,boolean admin) {
		
		if(usuarioExiste(usuario))
		{
			String query = "INSERT INTO CLIENTE VALUES('"+usuario+"',"+codcliente+",'"+nombre+"','"+apellido+"','"+direccion+"','"+password+"',"+admin+");" ;
			try {
				stmt.executeUpdate(query);
//					VentanaServidor.console.append("Cliente: "+usuario+" insertado correctamente\n");
//					if(admin)
//						VentanaServidor.console.append("Nuevo Administrador! \n");
					
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Nombre de usuario ya existe", "Error",JOptionPane.ERROR_MESSAGE);
			
		}
		
	}


	public String completarNombre(String usuario) {
		
		if(!usuarioExiste(usuario))
		{

		String query =("SELECT CODCLIENTE, NOMBRE, APELLIDO, DIRECCION,ADMIN FROM CLIENTE WHERE USUARIO = '"+usuario+"';");

		try {
			stmt=BD.createStatement();
			rs = stmt.executeQuery(query);

			while (rs.next())
			{
				codigoRegistro = rs.getInt("CODCLIENTE");
				nombreRegistro = rs.getString("NOMBRE");
				apellidoRegistro = rs.getString("APELLIDO");
				direccionRegistro = rs.getString("Direccion");
				int adminProv = rs.getInt("ADMIN");
					if(adminProv == 1)
						adminRegistro = true;
					else 
						adminRegistro = false;
					
			}
	
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
			return nombreRegistro;
		}
	
		else
		{
//		JOptionPane.showMessageDialog(null, "Nombre de usuario no existe", "Error",JOptionPane.ERROR_MESSAGE);
		return "RAMON123";
		}
		
	
	}
		

	public String completarApellido(String usuario) {
		// TODO Auto-generated method stub
		return apellidoRegistro;
	}

	public int completarCodigo(String usuario) {
		// TODO Auto-generated method stub
		return codigoRegistro;
	}

	public String completarDireccion(String usuario) {
		// TODO Auto-generated method stub
		return direccionRegistro;
	}

	public boolean completarAdmin(String usuario) {
		// TODO Auto-generated method stub
		return adminRegistro;
	}
	public String email(String codcliente)
	{
		
		Statement stmt2=null;
		String query=null;
		ResultSet rs=null;
		String email=null;
			
		try
		{
			stmt2=BD.createStatement();
			query="SELECT DIRECCION FROM CLIENTE WHERE CODCLIENTE='"+codcliente+"';";
			rs = stmt2.executeQuery(query);
			
			
			while(rs.next())
			{
				email=rs.getString("DIRECCION");
			
			}
			rs.close();
			stmt2.close();
		}
		
		catch (Exception e)
		{
			e.printStackTrace();
		}
		return email;
	}

	public void editarUsuario(String nombre, String apellido, String usuario,
			String direccion, String password, int codcliente) {
		
		String query ="UPDATE CLIENTE SET USUARIO = '"+usuario+"', NOMBRE = '"+nombre+"', APELLIDO = '"+apellido+"', DIRECCION = '"+direccion+"' WHERE CODCLIENTE = '"+codcliente+"';";
		try {
			stmt.executeUpdate(query);
			
		} catch (SQLException e) {

			System.out.println(e.getMessage());
			e.printStackTrace();
		}
//		VentanaServidor.console.append("Usuario: "+usuario+" ha sido editado correctamente. \n");
		
	}
	
	public boolean usuarioExiste(String usu)
	{

		
		try {
			stmt=BD.createStatement();
			String query = "SELECT USUARIO FROM CLIENTE";
			rs = BD.getRs();
			rs = stmt.executeQuery(query);

		while(rs.next())
		{
			if(usu.equals(rs.getString("USUARIO"))){
				rs.close();
				stmt.close();
				return false;
			}
		}	
		
		} catch (SQLException e) {
			System.out.println(e.getMessage());
		}

		return true;
	}

}
